const obj = {
  name: 'zs',
  sayHi() {
    // 普通函数的写法，书写时并不能绑定 this 的指向
    console.log('🟠函数被调用时 this 指向为', this);
  },
};

// 由 obj 调用，this 指向 obj
obj.sayHi();
// 由定时器调用，this 指向 window
window.setTimeout(obj.sayHi, 1000);
// 由document调用，事件触发时 this 指向 document
document.addEventListener('click', obj.sayHi);

// 特别注意：通过 bind 可修改函数的 this ，如：修改为 undefined (屏蔽this)
const sayHi2 = obj.sayHi.bind(undefined);
sayHi2(); // 打印undefined
